Tree-conversion delta encoding

ABSTRACT

A first data tree of a first version of the software and a second data tree of a second version of the software may be provided. The first data tree may be converted into a first data tree file, and the second data tree may be converted into a second data tree file. A delta for the first data tree and the second data tree may be generated based on a comparison of the first data tree file and the second data tree file. The delta may be packaged for provision to a client-side agent. The client-side agent may be configured to modify a client-side version of the software based on the delta.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. patent application Ser. No.16/233,606, filed Dec. 27, 2018, and entitled “TREE-CONVERSION DELTAENCODING.” The entirety of the aforementioned application isincorporated herein by reference.

TECHNICAL FIELD

The disclosure relates generally to encoding delta usingtree-conversion.

BACKGROUND

Delta encoding may be used to track changes within different versions ofa file. However, software may contain a number of files and a number ofdirectories. Developing a framework for using delta encoding to trackchanges and similarities between files and folders may be complex andtime consuming.

SUMMARY

One aspect of the present disclosure is directed to a system formodifying software using a tree-conversion delta encoding. The systemmay comprise a software manager, a tree-to-file converter, and afile-delta encoding engine. The software manager may be configured toprovide a first data tree of a first version of the software and asecond data tree of a second version of the software to the tree-to-fileconverter. The tree-to-file converter may be configured to convert thefirst data tree into a first data tree file and convert the second datatree into a second data tree file. The first data tree may include afirst set of directory nodes and a first set of file nodes, and thesecond data tree may include a second set of directory nodes and asecond set of file nodes. The file-delta encoding engine may beconfigured to generate a delta for the first data tree and the seconddata tree based on a comparison of the first data tree file and thesecond data tree file. A pack format of a data tree file may include atree definition in a header, may define individual file nodes of thedata tree using a file name, a file type, and a data location, and maydefine individual directory nodes of the data tree using a directoryname and a directory type. Data of the individual file nodes may beplaced within the data tree file in an order of data-tree traversal. Thedelta may be packaged for provision to a client-side agent. Theclient-side agent may be configured to modify a client-side version ofthe software based on the delta.

In some embodiments, the pack format of the data tree file may beplatform independent and may not include time stamp information,ownership information or version information.

Another aspect of the present disclosure is directed to a system formodifying software using a tree-conversion delta encoding. The systemmay comprise a software manager, a tree-to-file converter, and afile-delta encoding engine. The software manager may be configured toprovide a first data tree of a first version of the software and asecond data tree of a second version of the software to the tree-to-fileconverter. The tree-to-file converter may be configured to convert thefirst data tree into a first data tree file and convert the second datatree into a second data tree file. The first data tree may include afirst set of directory nodes and a first set of file nodes, and thesecond data tree may include a second set of directory nodes and asecond set of file nodes. The file-delta encoding engine may beconfigured to generate a delta for the first data tree and the seconddata tree based on a comparison of the first data tree file and thesecond data tree file. The delta may be packaged for provision to aclient-side agent. The client-side agent may be configured to modify aclient-side version of the software based on the delta.

Another aspect of the present disclosure is directed to a method formodifying software using a tree-conversion delta encoding. The methodmay comprise: providing a first data tree of a first version of thesoftware and a second data tree of a second version of the software;converting the first data tree into a first data tree file andconverting the second data tree into a second data tree file, the firstdata tree including a first set of directory nodes and a first set offile nodes, and the second data tree including a second set of directorynodes and a second set of file nodes; and generating a delta for thefirst data tree and the second data tree based on a comparison of thefirst data tree file and the second data tree file; wherein the delta ispackaged for provision to a client-side agent, the client-side agentconfigured to modify a client-side version of the software based on thedelta.

In some embodiments, the comparison of the first data tree file and thesecond data tree file may be performed using bsdiff, xdelta, or zdelta.

In some embodiments, conversion of a data tree into a data tree file maybe performed using tar.

In some embodiments, a pack format of a data tree file may be platformindependent and may not include time stamp information, ownershipinformation or version information. The pack format of the data treefile may include a tree definition in a header, may define individualfile nodes of the data tree using a file name, a file type, and a datalocation, and may define individual directory nodes of the data treeusing a directory name and a directory type. Data of the individual filenodes may be placed within the data tree file in an order of data-treetraversal.

In some embodiments, the delta for the first data tree and the seconddata tree may be generated as a set of differences to be applied to acopy of the first data tree file to construct a copy of the second datatree file. The copy of the second data tree file may be converted into acopy of the second data tree.

In some embodiments, a client, responsive to receiving the delta, may beconfigured to perform: accessing the first data tree and the delta;converting the first data tree into the copy of the first data treefile; constructing the copy of the second data tree file by applying thedelta to the copy of the first data tree file; and converting the copyof the second data tree file into the copy of the second data tree.

In some embodiments, the delta for the first data tree and the seconddata tree may be generated as a set of differences to be applied to anempty file to construct a copy of the second data tree file. The copy ofthe second data tree file may be converted into a copy of the seconddata tree.

In some embodiments, a client, responsive to receiving the delta, may beconfigured to perform: accessing the delta; constructing the copy of thesecond data tree file by applying the delta to an empty file; andconverting the copy of the second data tree file into the copy of thesecond data tree.

These and other features of the systems, methods, and non-transitorycomputer readable media disclosed herein, as well as the methods ofoperation and functions of the related elements of structure and thecombination of parts and economies of manufacture, will become moreapparent upon consideration of the following description and theappended claims with reference to the accompanying drawings, all ofwhich form a part of this specification, wherein like reference numeralsdesignate corresponding parts in the various figures. It is to beexpressly understood, however, that the drawings are for purposes ofillustration and description only and are not intended as a definitionof the limits of the invention. It is to be understood that theforegoing general description and the following detailed description areexemplary and explanatory only, and are not restrictive of theinvention, as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

Preferred and non-limiting embodiments of the invention may be morereadily understood by referring to the accompanying drawings in which:

FIG. 1 illustrates an example environment for tree-conversion deltaencoding, in accordance with various embodiments of the disclosure.

FIG. 2 illustrates an example conversion of a data tree into a data treefile, in accordance with various embodiments of the disclosure.

FIG. 3 illustrates example processes for generating delta of data treesand constructing a second data tree from a first data tree and a delta,in accordance with various embodiments of the disclosure.

FIG. 4 illustrates an example client-server architecture, in accordancewith various embodiments of the disclosure

FIG. 5 illustrates an example client-server architecture, in accordancewith various embodiments of the disclosure

FIG. 6A illustrates a flow chart of an example method, in accordancewith various embodiments of the disclosure.

FIG. 6B illustrates a flow chart of an example method, in accordancewith various embodiments of the disclosure.

FIG. 7 illustrates a block diagram of an example computer system inwhich any of the embodiments described herein may be implemented.

DETAILED DESCRIPTION OF THE EMBODIMENTS

Specific, non-limiting embodiments of the present invention will now bedescribed with reference to the drawings. It should be understood thatparticular features and aspects of any embodiment disclosed herein maybe used and/or combined with particular features and aspects of anyother embodiment disclosed herein. It should also be understood thatsuch embodiments are by way of example and are merely illustrative of asmall number of embodiments within the scope of the present invention.Various changes and modifications obvious to one skilled in the art towhich the present invention pertains are deemed to be within the spirit,scope and contemplation of the present invention as further defined inthe appended claims.

The approaches disclosed herein enable use of file-based delta encodingto generate deltas for data trees. By converting data trees into datatree files, deltas may be generating by using file-based delta encodingto compare the data tree files. The delta may be applied to a data treeby converting the data tree into a data tree file, applying the delta tothe data tree file, and converting the data tree file back into a datatree. Such use of tree-conversion delta encoding to generate deltas fordata trees allows file-based delta encoding to be used to determinesimilarities and differences between multiple files and directorieswithin the data trees by comparing two files, rather than individuallycomparing all files or directories of the data trees.

FIG. 1 illustrates an example environment 100 for tree-conversion deltaencoding, in accordance with various embodiments. The exampleenvironment 100 may include a computing system 102. The computing system102 may include one or more processors and memory (e.g., permanentmemory, temporary memory). The processor(s) may be configured to performvarious operations by interpreting machine-readable instructions storedin the memory. The computing system 102 may include other computingresources. The computing system 102 may have access (e.g., via one ormore connections, via one or more networks) to other computingresources.

The computing system 102 may include a data tree component 112, aconversion component 114, and a delta component 116. The computingsystem 102 may include other components. While the computing system 102is shown in FIG. 1 as a single entity, this is merely for ease ofreference and is not meant to be limiting. One or more components or oneor more functionalities of the computing system 102 described herein maybe implemented in software. One or more components or one or morefunctionalities of the computing system 102 described herein may beimplemented in hardware. One or more components or one or morefunctionalities of the computing system 102 described herein may beimplemented in a single computing device or multiple computing devices.In some embodiments, one or more components or one or morefunctionalities of the computing system 102 described herein may beimplemented in one or more networks (e.g., enterprise networks), one ormore endpoints, one or more servers, or one or more clouds.

The data tree component 112 may be configured to access one or more datatrees. A data tree may include or be representative of a hierarchicaltree structure of data. A data tree may include a root value andsubtrees of children with a parent node. A data tree may include orrepresent file directories and files, with relationship between thedirectories and files represented by links among the nodes. For example,a parent directory may include a file and a sub-directory, and the nodesrepresenting the file and the sub-directory may be linked with the noderepresenting the parent directory. A data tree may include the files andthe directory themselves. For example, a data tree accessed by the datatree component 112 may include a data tree of software. Software maycontain multiple files and multiple directories. For example, ratherthan being included within a single file, software may include multiplesfiles that are organized within multiple directories, which areorganized in a tree structure. That is, the software may be organized inone or more directories and one or more files, and the data treeaccessed by the data tree component 112 may include the director(ies)and file(s) of the software.

A data tree may include a set of directory nodes and a set of filenodes. A set of directory nodes may include one or more directory nodes,and a set of file nodes may include one or more file nodes. A file nodemay be included within a directory node. A directory node may beincluded or nested within another directory node. A directory node mayinclude or represent a file directory, and a file node may include orrepresent a file.

For example, the data tree component 112 may access a first data treeand a second data tree. The first data tree including a first set ofdirectory nodes and a first set of file nodes, and the second data treeincluding a second set of directory nodes and a second set of filenodes. In some embodiments, the first data tree may include a firstversion of a data tree and the second data tree may include a secondversion of the data tree. For example, the data tree component 112 mayaccess a first version and a second version of software by accessing thecorresponding data trees. Thus, the data tree component 112 may accessdifferent versions of software by accessing different data trees of thesoftware.

Accessing a data tree may include one or more of acquiring, analyzing,determining, examining, identifying, loading, locating, obtaining,opening, receiving, retrieving, reviewing, storing, or otherwiseaccessing the data tree. The data tree component 112 may access a datatree from one or more locations. For example, the data tree component112 may access a data tree from a storage location, such as anelectronic storage of the computing system 102, an electronic storage ofa device accessible via a network, another computing device/system(e.g., desktop, laptop, smartphone, tablet, mobile device), or otherlocations.

Identifying similar or modified nodes within the data trees for deltaencoding may be difficult. For example, it may be difficult to determinewhether and to what extent a first directory node in a first data treehas been modified (e.g., file name changed, file added, file deleted,file modified, directory name changed, directory added, directorydeleted, directory modified) to generate a second directory node in asecond data tree, or whether the second directory node has been createdwithout any relation to the first directory node. As data trees becomemore complex, tracking changes and similarities between files andfolders may become more difficult. To overcome this deficiency inindividual file/directory delta encoding, a data tree may be convertedinto a data tree file. A data tree file may refer to a file thatincludes information on the data tree. Multiple data tree files may becompared using file-based delta encoding technologies to determinesimilarities and changes between the data tree. For example, rather thancomparing a data tree of a particular software version with another datatree of a different software version, the data trees of differentversions of software may be converted into data tree files and the datatree files may be compared using file-based delta encoding to determinechanges between the different versions of software.

The conversion component 114 may be configured to convert a data treeinto a data tree file. For example, the conversion component 114 mayconvert a first data tree into a first data tree file and a second datatree into a second data tree file. A data tree file may includeinformation on the data tree. A function that converts a data tree intoa data file may be represented as T2F(T) (tree-to-file), while Trepresents the data tree. A reverse function may be performed to converta data tree file into a data tree, and may be represented as F2T(F)(file-to-tree), where F represents the data tree file. In someembodiments, conversion of a data tree into a data tree file may beperformed using tar. Use of other tools for tree-to-file andfile-to-tree conversions are contemplated.

In some embodiments, the conversion component 114 may convert a datatree into a data tree file using a pack format. A pack format of a datatree file may refer to the structure or the organization according towhich information is arranged within the data tree file. In someembodiments, a pack format of a data tree file may be platformindependent and may not include non-generic information, such as timestamp information, ownership information, or version information.

In some embodiments, a pack format of a data tree file may include atree definition in a header. The tree structure may be defined withinthe tree definition such that individual file nodes of the data tree aredefined using a file name, a file type, and a data location, andindividual directory nodes of the data tree are defined using adirectory name and a directory type. Data of individual file nodes maybe placed within the data tree file in an order of data-tree traversal.That is data of files within the data tree may be placed in the order inwhich the data tree is traversed for tree-to-file conversion.

The delta component 116 may be configured to generate a delta for twodata trees based on a comparison of corresponding data tree files. Forexample, the delta component 116 may generate a delta for a first datatree and a second data tree based on a comparison of a first data treefile corresponding to the first data tree and a second data tree filecorresponding to the second data tree. A delta may refer to differencesbetween two data, such as the two data tree or the two data tree files.In some embodiments, the comparison of the data tree files (e.g., thefirst data tree file and the second data tree file) may be performedusing bsdiff, xdelta, or zdelta. In some embodiments, the comparison ofthe data tree files may be performed using a greedy-algorithm basedtool. Use of other delta-encoding tools are contemplated.

Generation of a delta by the delta component 116 may be represented as:

Δ=F ₂ −F ₁, where F represents a data tree file

Construction of a data tree file based on another data tree file and adelta may be represented as:

F ₂ =F ₁+Δ

Generation of a delta from data trees may be represented as:

F ₁ =T2F(T ₁)

F ₂ =T2F(T ₂)

Δ=F ₂ −F ₁

In some embodiments, a delta for data trees may be generated as a set ofdifferences to be applied to a copy of a data tree file to construct acopy of another data tree file. For example, a delta for the first datatree and the second data tree may be generated as a set of differencesto be applied to a copy of the first data tree file to construct a copyof the second data tree file. The copy of the constructed data tree file(e.g., the second data tree file) may be converted into a copy of theother data tree (e.g., the second data tree). A client may receive sucha delta to construct the other data tree or the other data tree file.For example, a client, responsive to receiving the delta, may beconfigured to perform the following: accessing the first data tree andthe delta; converting the first data tree into the copy of the firstdata tree file; constructing the copy of the second data tree file byapplying the delta to the copy of the first data tree file; andconverting the copy of the second data tree file into the copy of thesecond data tree.

In some embodiments, a delta for data trees may be generated as a set ofdifferences to be applied to an empty file to construct a copy of a datatree file. For example, a delta for the first data tree and the seconddata tree may be generated as a set of differences to be applied to anempty file to construct a copy of the second data tree file that usesthe first data tree file. The copy of the constructed data tree file(e.g., the second data tree file) may be converted into a copy of theother data tree (e.g., the second data tree). A client may receive sucha delta to construct the other data tree or the other data tree file.For example, a client, responsive to receiving the delta, may beconfigured to perform the following: accessing the delta; constructingthe copy of the second data tree file by applying the delta to an emptyfile; and converting the copy of the second data tree file into the copyof the second data tree.

FIG. 2 illustrates an example conversion of a data tree 200 into a datatree file 250, in accordance with various embodiments of the disclosure.The data tree 200 may include directory nodes 202, 208, 214, 218 andfile nodes 204, 206, 210, 212, 216, 220, 222. The data tree 200 may beconverted into the data tree file 250, with information within the datatree file 250 being organized in accordance with a pack format. The packformat of the data tree file 250 may include a header 252. The header252 may include header information of the data tree file 250. The header252 may also include or may be adjacent to a tree structure 254. Thetree structure 254 may define directory names and directory types of thedirectory nodes 202, 208, 214, 218. The tree structure 254 may be definefile names, file types, and data locations (e.g., file addressinformation, file size information) of file nodes 204, 206, 210, 212,216, 220, 222. The data tree file 250 may include an alignment space256, which may include spare space for alignment of data within the datatree file 250. The data tree file 250 may include data of individualfile nodes 258, 260, 262, 264, 266, 268, 270, with the data of theindividual file nodes placed in the order in which the data tree 200 istraversed for tree-to-file conversion. For example, the data tree 200may be traversed in a top-down direction, and data of file node 204 maybe included as data 258, data of file node 206 may be included as data260, data of file node 210 may be included as data 262, data of filenode 212 may be included as data 264, data of file node 216 may beincluded as data 266, data of file node 220 may be included as data 268,and data of file node 222 may be included as data 270 within the datatree file 250. Other pack formats for data tree files are contemplated.

FIG. 3 illustrates an example process 300 for generating delta of datatrees (diffing) and an example process 350 of constructing a second datatree from a first data tree and a delta (reconstruction), in accordancewith various embodiments of the disclosure. Inputs to the process 300may include two data trees (T1, T2). At step 302, tree-to-fileconversion may be performed to generate two data tree files (F1, F2). Atstep 304, a delta may be generated as a difference of the two data treefiles. Inputs to the process 350 may include a data tree (T1) and adelta. At step 352, a tree-to-file conversion may be performed togenerate a data tree file (F1). Another data tree file (F2) may beconstructed by applying the delta to the converted data tree file. Theother data tree file may be converted into another data tree (T2).

FIG. 4 illustrates an example client-server architecture 400, inaccordance with various embodiments of the disclosure. The architecture400 may include a server 410 and a client 420. The client 420 mayinclude a client-side agent 422. The server 410 may include or becoupled (directly or indirectly) to a software manager 402, atree-to-file converter 404, and a file delta encoding engine 406. Thesoftware manager 402 may be configured to provide different data trees(T1, T2) to the tree-to-file converter 404. Individual data trees mayinclude a set of directory nodes and a set of file nodes. In someembodiments, the data trees provided by the software manager 402 may bedifferent versions of a data tree. For example, a first data tree (T1)provided by the software manager 402 may be one version of the data treeand a second data tree (T2) provided by the software manager 402 may beanother version of the data tree. The data tree may be or includesoftware. For instance, the first data tree (T1) provided by thesoftware manager 402 may be one version of the software and a seconddata tree (T2) provided by the software manager 402 may be anotherversion of the software.

The tree-to-file converter 404 may be configured to convert the treesprovided by the software manager 402 into data tree files. For example,the tree-to-file converter may convert the first data tree into a firstdata tree file (F1) and convert the second data tree into a second datatree file (F2). The converted data tree files may be provided to thefile delta encoding engine 406.

The file-delta encoding engine 406 may be configured to generate a deltafor different data trees based on a comparison of the corresponding datatree files. For example, the file delta encoding engine 406 may generatea delta for the first data tree (T1) and the second data tree (T2) basedon a comparison of the first data tree file (F1) and the second datatree file (F2). The delta may be packaged into one or more deltapackages 408 for provision by the server 410 to the client-side agent422.

The client-side agent 422 may be configured to modify a client-sideversion of the data tree based on the delta. For example, theclient-side agent 422 may modify the client 420 or a client-side versionof software (software installed in, stored by, used by the client 420)based on the delta. The client 420 (or the client-side agent 422) mayupdate software of the client 420 using the tree-conversion deltaencoding described herein.

For example, the delta for the first data tree (T1) and the second datatree (T2) may be generated as a set of differences to be applied to acopy of the first data tree file (F1) to construct a copy of the seconddata tree file (F2). The copy of the second data tree file (F2) may beconverted into a copy of the second data tree (T2).

In some embodiments, the client 420 (or the client-side agent 422) maybe configured to perform the following operations responsive toreceiving the delta (or the delta packages 408) from the server 410:accessing the first data tree (T1) and the delta; converting the firstdata tree (T1) into the copy of the first data tree file (F1);constructing the copy of the second data tree file (F2) by applying thedelta to the copy of the first data tree file (F1); and converting thecopy of the second data tree file (F2) into the copy of the second datatree (T2).

As another example, the delta for the first data tree (T1) and thesecond data tree (T2) may be generated as a set of differences to beapplied to an empty file to construct a copy of the second data treefile (F2). The copy of the second data tree file (F2) may be convertedinto a copy of the second data tree (T2).

In some embodiments, the client 420 (or the client-side agent 422) maybe configured to perform one or more of the following operationsresponsive to receiving the delta (or the delta packages 408) from theserver 410: accessing the delta; constructing the copy of the seconddata tree file (F2) by applying the delta to an empty file; andconverting the copy of the second data tree file (F2) into the copy ofthe second data tree (T2).

FIG. 5 illustrates an example client-server architecture 500, inaccordance with various embodiments of the disclosure. The client-serverarchitecture 500 may be used to modify or update software, such as anautonomous vehicle safety and security (AVSS) software. Use of the sameor similar architecture to modify or update other software arecontemplated. The client-server architecture 500 may include an OTAserver 510 and an AVSS agent 520. The AVSS agent 520 may include aclient-side over-the-air (OTA) agent 522. In some embodiments, theclient-side OTA agent 522 may be separate from the AVSS agent 520. TheOTA server 510 may include or be coupled (directly or indirectly) to anAVSS software manager 502, a tree-to-file converter 504, and a filedelta encoding engine 506.

The AVSS agent 520 may include some or all of the functionalities of theclient 420. The client-side OTA agent 522 may include some or all of thefunctionalities of the client-side agent 422. The OTA server 510 mayinclude some or all of the functionalities of the server 410. The AVSSsoftware manager 502 may include some or all of the functionalities ofthe software manager 402. The tree-to-file converter 504 may includesome or all of the functionalities of the tree-to-file converter 504.The file delta encoding engine 506 may include some or all of thefunctionalities of the file delta encoding engine 406. A delta generatedby the file delta encoding engine 506 may be packaged into one or moredelta packages 508 for provision by the OTA server 510 to theclient-side OTA agent 522.

The AVSS agent 520 may operate on top of an autonomous drivingcontroller (ADC) system for one or more tasks relevant to AVSS. The AVSSagent 520 may communicate with an AVSS server 532. The AVSS server 532may be located in the cloud of autonomous vehicle security operationscenter (AV SOC) 530. The AVSS server 532 may perform one or more tasksrelevant to AVSS, such as AV safety and security management, remoteintervention, safety and security intelligence, safety and securityanalysis, and forensic analysis. The AV SOC 530 may operate as asecurity operations center for AV vehicles or fleets. The AV SOC 530 maysupport one or more safety and security operation functions for AVvehicles or fleets. The AV SOC 530 may communicate with an autonomousvehicle business operations center (AV BOC) 540. The AV BOC 540 maysupport one or more business operation functions for AV vehicles orfleets. The AV BOC 540 may communicate with one or more client devices550, such as devices of vehicle drivers or riders.

The AVSS agent 520 may need to be modified or updated when a new AVSSagent software is available. The AVSS agent 520 (or the client-side OTAagent 522) may update software of the AVSS agent 520 using thetree-conversion delta encoding described herein. For example, the AVSSagent 520 (or the client-side OTA agent 522) may use a tree-to-fileconversion to convert a data tree into a data tree file, apply the deltawithin the delta package(s) 508 to the data tree file, and then use afile-to-tree conversion to construct the modified/updated data tree. TheAVSS agent 520 (or the client-side OTA agent 522) may perform othertasks, such as downloading the delta package(s) 508 from the OTA server510, decrypting the delta package(s) 508, verifying the integrity of thedelta package(s) 508, and verifying the integrity of themodified/updated data tree before overwriting the original data tree(overwriting the data tree of the AVSS agent 520). In some embodiments,the AVSS agent 520 (or the client-side OTA agent 522) may store themodified/updated data tree file so that a subsequent modification/updateof the data tree does not require conversion of the data tree to a datatree file.

FIG. 6A illustrates a flowchart of an example method 600, according tovarious embodiments of the present disclosure. The method 600 may beimplemented in various environments including, for example, theenvironment 100 of FIG. 1, the architecture 400 of FIG. 4, or thearchitecture 500 of FIG. 5. The operations of the method 600 presentedbelow are intended to be illustrative. Depending on the implementation,the method 600 may include additional, fewer, or alternative stepsperformed in various orders or in parallel. The method 600 may beimplemented in various computing systems or devices including one ormore processors.

With respect to the method 600, at block 602, a first data tree may beaccessed. The first data tree may include a first set of directory nodesand a first set of file nodes. At block 604, a second data tree may beaccessed. The second data tree may include a second set of directorynodes and a second set of file nodes. At block 606, the first data treemay be converted into a first data tree file. At block 608, the seconddata tree may be converted into a second data tree file. At block 610, adelta for the first data tree and the second data tree may be generatedbased on a comparison of the first data tree file and the second datatree file.

FIG. 6B illustrates a flowchart of an example method 650, according tovarious embodiments of the present disclosure. The method 650 may beimplemented in various environments including, for example, theenvironment 100 of FIG. 1, the architecture 400 of FIG. 4, or thearchitecture 500 of FIG. 5. The operations of the method 650 presentedbelow are intended to be illustrative. Depending on the implementation,the method 650 may include additional, fewer, or alternative stepsperformed in various orders or in parallel. The method 650 may beimplemented in various computing systems or devices including one ormore processors.

With respect to the method 650, at block 652, a first data tree of afirst version of software may be provided. The first data tree mayinclude a first set of directory nodes and a first set of file nodes. Atblock 654, a second data tree of a second version of the software may beprovided. The second data tree may include a second set of directorynodes and a second set of file nodes. At block 656, the first data treemay be converted into a first data tree file. At block 658, the seconddata tree may be converted into a second data tree file. At block 660, adelta for the first data tree and the second data tree may be generatedbased on a comparison of the first data tree file and the second datatree file. The delta may be packaged for provision to a client-sideagent. The client-side agent may be configured to modify a client-sideversion of the software based on the delta.

FIG. 7 is a block diagram that illustrates a computer system 700 uponwhich any of the embodiments described herein may be implemented. Thecomputer system 700 includes a bus 702 or other communication mechanismfor communicating information, one or more hardware processors 704coupled with bus 702 for processing information. Hardware processor(s)704 may be, for example, one or more general purpose microprocessors.

The computer system 700 also includes a main memory 706, such as arandom access memory (RAM), cache and/or other dynamic storage devices,coupled to bus 702 for storing information and instructions to beexecuted by processor(s) 704. Main memory 706 also may be used forstoring temporary variables or other intermediate information duringexecution of instructions to be executed by processor(s) 704. Suchinstructions, when stored in storage media accessible to processor(s)704, render computer system 700 into a special-purpose machine that iscustomized to perform the operations specified in the instructions. Mainmemory 706 may include non-volatile media and/or volatile media.Non-volatile media may include, for example, optical or magnetic disks.Volatile media may include dynamic memory. Common forms of media mayinclude, for example, a floppy disk, a flexible disk, hard disk, solidstate drive, magnetic tape, or any other magnetic data storage medium, aCD-ROM, any other optical data storage medium, any physical medium withpatterns of holes, a RAM, a DRAM, a PROM, and EPROM, a FLASH-EPROM,NVRAM, any other memory chip or cartridge, and networked versions of thesame.

The computer system 700 may implement the techniques described hereinusing customized hard-wired logic, one or more ASICs or FPGAs, firmwareand/or program logic which in combination with the computer systemcauses or programs computer system 700 to be a special-purpose machine.According to one embodiment, the techniques herein are performed bycomputer system 700 in response to processor(s) 704 executing one ormore sequences of one or more instructions contained in main memory 706.Such instructions may be read into main memory 706 from another storagemedium, such as storage device 708. Execution of the sequences ofinstructions contained in main memory 706 causes processor(s) 704 toperform the process steps described herein. For example, theprocess/method shown in FIG. 6A and/or FIG. 6B and described inconnection with this figure may be implemented by computer programinstructions stored in main memory 706. When these instructions areexecuted by processor(s) 704, they may perform the steps as shown inFIG. 6A and/or FIG. 6B and described above. In alternative embodiments,hard-wired circuitry may be used in place of or in combination withsoftware instructions.

The computer system 700 also includes a communication interface 710coupled to bus 702. Communication interface 710 provides a two-way datacommunication coupling to one or more network links that are connectedto one or more networks. As another example, communication interface 710may be a local area network (LAN) card to provide a data communicationconnection to a compatible LAN (or WAN component to communicated with aWAN). Wireless links may also be implemented.

The performance of certain of the operations may be distributed amongthe processors, not only residing within a single machine, but deployedacross a number of machines. In some example embodiments, the processorsor processor-implemented engines may be located in a single geographiclocation (e.g., within a home environment, an office environment, or aserver farm). In other example embodiments, the processors orprocessor-implemented engines may be distributed across a number ofgeographic locations.

Certain embodiments are described herein as including logic or a numberof components. Components may constitute either software components(e.g., code embodied on a machine-readable medium) or hardwarecomponents (e.g., a tangible unit capable of performing certainoperations which may be configured or arranged in a certain physicalmanner). As used herein, for convenience, components of the computingsystem 102 may be described as performing or configured for performingan operation, when the components may comprise instructions which mayprogram or configure the computing system 102 to perform the operation.

While examples and features of disclosed principles are describedherein, modifications, adaptations, and other implementations arepossible without departing from the spirit and scope of the disclosedembodiments. Also, the words “comprising,” “having,” “containing,” and“including,” and other similar forms are intended to be equivalent inmeaning and be open ended in that an item or items following any one ofthese words is not meant to be an exhaustive listing of such item oritems, or meant to be limited to only the listed item or items. It mustalso be noted that as used herein and in the appended claims, thesingular forms “a,” “an,” and “the” include plural references unless thecontext clearly dictates otherwise.

The embodiments illustrated herein are described in sufficient detail toenable those skilled in the art to practice the teachings disclosed.Other embodiments may be used and derived therefrom, such thatstructural and logical substitutions and changes may be made withoutdeparting from the scope of this disclosure. The Detailed Description,therefore, is not to be taken in a limiting sense, and the scope ofvarious embodiments is defined only by the appended claims, along withthe full range of equivalents to which such claims are entitled.

What is claimed is:
 1. A system for modifying software using atree-conversion delta encoding, the system comprising: a softwaremanager configured to provide a first data tree of a first version ofthe software and a second data tree of a second version of the softwareto a tree-to-file converter; the tree-to-file converter configured toconvert the first data tree into a first data tree file and convert thesecond data tree into a second data tree file, the first data treeincluding a first set of directory nodes and a first set of file nodes,and the second data tree including a second set of directory nodes and asecond set of file nodes; and a file-delta encoding engine configured togenerate a delta for the first data tree and the second data tree basedon a comparison of the first data tree file and the second data treefile; wherein: a pack format of a data tree file includes a treedefinition in a header, defines individual file nodes of the data treeusing a file name, a file type, and a data location, and definesindividual directory nodes of the data tree using a directory name and adirectory type; data of the individual file nodes are placed within thedata tree file in an order of data-tree traversal; and the delta ispackaged for provision to a client-side agent, the client-side agentconfigured to modify a client-side version of the software based on thedelta.
 2. The system of claim 1, wherein the pack format of the datatree file is platform independent and does not include time stampinformation, ownership information or version information.
 3. A systemfor modifying software using a tree-conversion delta encoding, thesystem comprising: a software manager configured to provide a first datatree of a first version of the software and a second data tree of asecond version of the software to a tree-to-file converter; thetree-to-file converter configured to convert the first data tree into afirst data tree file and convert the second data tree into a second datatree file, the first data tree including a first set of directory nodesand a first set of file nodes, and the second data tree including asecond set of directory nodes and a second set of file nodes; and afile-delta encoding engine configured to generate a delta for the firstdata tree and the second data tree based on a comparison of the firstdata tree file and the second data tree file; wherein the delta ispackaged for provision to a client-side agent, the client-side agentconfigured to modify a client-side version of the software based on thedelta.
 4. The system of claim 3, wherein the comparison of the firstdata tree file and the second data tree file is performed using bsdiff,xdelta, or zdelta.
 5. The system of claim 3, wherein conversion of adata tree into a data tree file is performed using tar.
 6. The system ofclaim 3, wherein a pack format of a data tree file is platformindependent and does not include time stamp information, ownershipinformation or version information.
 7. The system of claim 6, whereinthe pack format of the data tree file includes a tree definition in aheader, defines individual file nodes of the data tree using a filename, a file type, and a data location, and defines individual directorynodes of the data tree using a directory name and a directory type. 8.The system of claim 7, wherein data of the individual file nodes areplaced within the data tree file in an order of data-tree traversal. 9.The system of claim 3, wherein the delta for the first data tree and thesecond data tree is generated as a set of differences to be applied to acopy of the first data tree file to construct a copy of the second datatree file, and the copy of the second data tree file is converted into acopy of the second data tree.
 0. The system of claim 9, wherein theclient-side agent, responsive to receiving the delta, is configured toperform: accessing the first data tree and the delta; converting thefirst data tree into the copy of the first data tree file; constructingthe copy of the second data tree file by applying the delta to the copyof the first data tree file; and converting the copy of the second datatree file into the copy of the second data tree.
 11. The system of claim3, wherein the delta for the first data tree and the second data tree isgenerated as a set of differences to be applied to an empty file toconstruct a copy of the second data tree file, and the copy of thesecond data tree file is converted into a copy of the second data tree.12. A method for modifying software using a tree-conversion deltaencoding, the method comprising: providing a first data tree of a firstversion of the software and a second data tree of a second version ofthe software; converting the first data tree into a first data tree fileand converting the second data tree into a second data tree file, thefirst data tree including a first set of directory nodes and a first setof file nodes, and the second data tree including a second set ofdirectory nodes and a second set of file nodes; and generating a deltafor the first data tree and the second data tree based on a comparisonof the first data tree file and the second data tree file; wherein thedelta is packaged for provision to a client-side agent, the client-sideagent configured to modify a client-side version of the software basedon the delta.
 13. The method of claim 12, wherein the comparison of thefirst data tree file and the second data tree file is performed usingbsdiff, xdelta, or zdelta.
 14. The method of claim 12, whereinconversion of a data tree into a data tree file is performed using tar.15. The method of claim 12, wherein a pack format of a data tree file isplatform independent and does not include time stamp information,ownership information or version information.
 16. The method of claim15, wherein the pack format of the data tree file includes a treedefinition in a header, defines individual file nodes of the data treeusing a file name, a file type, and a data location, and definesindividual directory nodes of the data tree using a directory name and adirectory type.
 17. The method of claim 16, wherein data of theindividual file nodes are placed within the data tree file in an orderof data-tree traversal.
 18. The method of claim 12, wherein the deltafor the first data tree and the second data tree is generated as a setof differences to be applied to a copy of the first data tree file toconstruct a copy of the second data tree file, and the copy of thesecond data tree file is converted into a copy of the second data tree.19. The method of claim 18, wherein the client-side agent, responsive toreceiving the delta, is configured to perform: accessing the first datatree and the delta; converting the first data tree into the copy of thefirst data tree file; constructing the copy of the second data tree fileby applying the delta to the copy of the first data tree file; andconverting the copy of the second data tree file into the copy of thesecond data tree.
 20. The method of claim 12, wherein the delta for thefirst data tree and the second data tree is generated as a set ofdifferences to be applied to an empty file to construct a copy of thesecond data tree file, and the copy of the second data tree file isconverted into a copy of the second data tree.